diff -u --recursive orig/xemacs-19.14/INSTALL xemacs-19.14/INSTALL
--- orig/xemacs-19.14/INSTALL	Wed Jun 26 17:42:35 1996
+++ xemacs-19.14/INSTALL	Wed Jun 26 17:48:08 1996
@@ -212,6 +212,10 @@
 drop support.  `configure' will attempt to detect this option and
 define `--with-cde' for you.
 
+The `--with-offix option allows you to enable or disable OffiX drag and
+drop support.  `configure' will attempt to detect this option and
+define `--with-offix' for you.
+
 The `--with-energize' option specifies that XEmacs should be built
 with support for the Lucid Energize system.  (If you have not
 purchased Energize, specifying this option won't gain you anything.)
diff -u --recursive orig/xemacs-19.14/configure xemacs-19.14/configure
--- orig/xemacs-19.14/configure	Wed Jun 26 18:48:40 1996
+++ xemacs-19.14/configure	Wed Jun 26 18:48:19 1996
@@ -211,6 +211,7 @@
 			 Motif dialog boxes will be used if Motif can be
 			 found.)
 --with-cde (*)		Compile in support for CDE drag and drop.
+--with-offix (*)	Compile in support for OffiX drag and drop.
 --with-xpm (*)		Compile with support for XPM files.
 			It is highly recommended that you obtain XPM
 			(version 3.4g or better) if you don't already
@@ -625,6 +626,22 @@
           eval "${opt}=\"${val}\""
         ;;
 
+        ## Has the user requested OffiX support?
+	"with_offix" )
+	  ## Make sure the value given was either "yes" or "no".
+	  case "${val}" in
+	    y | ye | yes )	val=yes ;;
+	    n | no )		val=no  ;;
+	    * )
+	      (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
+Set it to either \`yes' or \`no'."
+	       echo "${short_usage}") >&2
+	      exit 1
+	    ;;
+	  esac
+          eval "${opt}=\"${val}\""
+        ;;
+
         ## Has the user requested XPM support?
 	"with_xpm" )
 	  ## Make sure the value given was either "yes" or "no".
@@ -3557,6 +3574,10 @@
      echo "configure: warning: --with-cde ignored:  Not valid without X support" >&2 
     with_menubars='no'
   fi
+  if [ "x${with_offix}" != x ]; then
+     echo "configure: warning: --with-offix ignored:  Not valid without X support" >&2 
+    with_offix='no'
+  fi
   if [ "x${with_menubars}" != x ]; then
      echo "configure: warning: --with-menubars ignored:  Not valid without X support" >&2 
     with_menubars='no'
@@ -3574,6 +3595,7 @@
     with_toolbars='no'
   fi
   with_cde='no'
+  with_offix='no'
   with_menubars='no'
   with_scrollbars='no'
   with_dialogs='no'
@@ -4229,6 +4251,66 @@
 fi
 
 #
+# See if we can find OffiX.
+#
+if test "${window_system}" != "none" ; then
+  if test "${with_offix}" != "no" ; then
+    if test "${with_offix}" != "yes" ; then
+      internal_offix_lib_found='no'
+      ac_save_LIBS="${LIBS}"
+LIBS="${LIBS} -lDnd"
+ac_have_lib=""
+test -n "$silent" || echo "checking for -lDnd"
+cat > conftest.${ac_ext} <<EOF
+#include "confdefs.h"
+
+int main() { return 0; }
+int t() { main();; return 0; }
+EOF
+if eval $ac_compile; then
+  rm -rf conftest*
+  ac_have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${ac_save_LIBS}"
+if test -n "${ac_have_lib}"; then
+   :; internal_offix_lib_found='yes'
+else
+   :; 
+fi
+
+      if test "${internal_offix_lib_found}" = "yes" ; then
+        internal_offix_includes_found='no'
+        for arg in ${DEFS} /usr/include
+          do
+            if test -f `echo "${arg}/OffiX/DragAndDrop.h" | sed 's/^\-I//'` ; then
+  	      internal_offix_includes_found='yes'
+            fi
+          done
+        if test "${internal_offix_includes_found}" = "yes" ; then
+          with_offix='yes'
+        fi
+      fi
+    fi
+  fi
+fi
+if test "${with_offix}" = "yes" ; then
+  
+{
+test -n "$verbose" && \
+echo "	defining HAVE_OFFIX_DND"
+echo "#define" HAVE_OFFIX_DND "1" >> confdefs.h
+DEFS="$DEFS -DHAVE_OFFIX_DND=1"
+ac_sed_defs="${ac_sed_defs}\${ac_dA}HAVE_OFFIX_DND\${ac_dB}HAVE_OFFIX_DND\${ac_dC}1\${ac_dD}
+\${ac_uA}HAVE_OFFIX_DND\${ac_uB}HAVE_OFFIX_DND\${ac_uC}1\${ac_uD}
+\${ac_eA}HAVE_OFFIX_DND\${ac_eB}HAVE_OFFIX_DND\${ac_eC}1\${ac_eD}
+"
+}
+
+fi
+
+#
 # See if we can find Xlocale.h.
 #
 with_xlocale_h='no'
@@ -8010,6 +8092,9 @@
 fi
 if [ "$with_cde" = "yes" ]; then
   echo "  Compiling in support for CDE."
+fi
+if [ "$with_offix" = "yes" ]; then
+  echo "  Compiling in support for OffiX."
 fi
 if [ "$with_mocklisp" = "yes" ]; then
   echo "  Compiling in support for Mocklisp."
diff -u --recursive orig/xemacs-19.14/configure.in xemacs-19.14/configure.in
--- orig/xemacs-19.14/configure.in	Wed Jun 26 19:13:39 1996
+++ xemacs-19.14/configure.in	Wed Jun 26 17:48:18 1996
@@ -226,6 +226,7 @@
 			 Motif dialog boxes will be used if Motif can be
 			 found.)
 --with-cde (*)		Compile in support for CDE drag and drop.
+--with-offix (*)	Compile in support for OffiX drag and drop.
 --with-xpm (*)		Compile with support for XPM files.
 			It is highly recommended that you obtain XPM
 			(version 3.4g or better) if you don't already
@@ -640,6 +641,22 @@
           eval "${opt}=\"${val}\""
         ;;
 
+        ## Has the user requested OffiX support?
+	"with_offix" )
+	  ## Make sure the value given was either "yes" or "no".
+	  case "${val}" in
+	    y | ye | yes )	val=yes ;;
+	    n | no )		val=no  ;;
+	    * )
+	      (echo "${progname}: the \`--${optname}' option is supposed to have a boolean value.
+Set it to either \`yes' or \`no'."
+	       echo "${short_usage}") >&2
+	      exit 1
+	    ;;
+	  esac
+          eval "${opt}=\"${val}\""
+        ;;
+
         ## Has the user requested XPM support?
 	"with_xpm" )
 	  ## Make sure the value given was either "yes" or "no".
@@ -2730,6 +2747,10 @@
     ] AC_WARN(--with-cde ignored:  Not valid without X support) [
     with_menubars='no'
   fi
+  if [ "x${with_offix}" != x ]; then
+    ] AC_WARN(--with-offix ignored:  Not valid without X support) [
+    with_offix='no'
+  fi
   if [ "x${with_menubars}" != x ]; then
     ] AC_WARN(--with-menubars ignored:  Not valid without X support) [
     with_menubars='no'
@@ -2747,6 +2768,7 @@
     with_toolbars='no'
   fi
   with_cde='no'
+  with_offix='no'
   with_menubars='no'
   with_scrollbars='no'
   with_dialogs='no'
@@ -3197,6 +3219,33 @@
 fi
 
 #
+# See if we can find OffiX.
+#
+if test "${window_system}" != "none" ; then
+  if test "${with_offix}" != "no" ; then
+    if test "${with_offix}" != "yes" ; then
+      internal_offix_lib_found='no'
+      AC_HAVE_LIBRARY(-lDnd, internal_offix_lib_found='yes')
+      if test "${internal_offix_lib_found}" = "yes" ; then
+        internal_offix_includes_found='no'
+        for arg in ${DEFS} /usr/include
+          do
+            if test -f `echo "${arg}/OffiX/DragAndDrop.h" | sed 's/^\-I//'` ; then
+  	      internal_offix_includes_found='yes'
+            fi
+          done
+        if test "${internal_offix_includes_found}" = "yes" ; then
+          with_offix='yes'
+        fi
+      fi
+    fi
+  fi
+fi
+if test "${with_offix}" = "yes" ; then
+  AC_DEFINE(HAVE_OFFIX_DND)
+fi
+
+#
 # See if we can find Xlocale.h.
 #
 with_xlocale_h='no'
@@ -4314,6 +4363,9 @@
 fi
 if [ "$with_cde" = "yes" ]; then
   echo "  Compiling in support for CDE."
+fi
+if [ "$with_offix" = "yes" ]; then
+  echo "  Compiling in support for OffiX."
 fi
 if [ "$with_mocklisp" = "yes" ]; then
   echo "  Compiling in support for Mocklisp."
diff -u --recursive orig/xemacs-19.14/src/Makefile.in.in xemacs-19.14/src/Makefile.in.in
--- orig/xemacs-19.14/src/Makefile.in.in	Wed Jun 26 19:42:00 1996
+++ xemacs-19.14/src/Makefile.in.in	Wed Jun 26 19:45:26 1996
@@ -739,6 +739,12 @@
 #  define LIB_CDE
 #endif
 
+#ifdef HAVE_OFFIX_DND
+#  define LIB_OFFIX_DND -lDnd
+#else
+#  defile LIB_OFFIX_DND
+#endif
+
 #if (defined(LIB_INTL) && (!(defined(I18N3) || defined(I18N4))))
   /* this should be defined by s- files, but we should not use it unless
      I18N3 or I18N4 are defined. */
@@ -1161,7 +1167,7 @@
 	   ${lispdir}bytecomp/byte-optimize.elc \
 	   ${lispdir}utils/advice.elc
 
-LIBES = NAS_LIBS SOUND_LIBS SOCKS_LIBS ENERGIZE_LIBS LIB_CDE \
+LIBES = NAS_LIBS SOUND_LIBS SOCKS_LIBS ENERGIZE_LIBS LIB_CDE LIB_OFFIX_DND\
 	LIB_TOOLTALK $(LIBX) \
 	LIBS_SYSTEM LIBS_MACHINE LIBS_TERMCAP LIB_INTL QUANTIFY_LIBS \
 	DATABASE_LIBS LIBS_DEBUG $(GNULIB_VAR) LIB_MATH LIB_STANDARD \
diff -u --recursive orig/xemacs-19.14/src/config.h.in xemacs-19.14/src/config.h.in
--- orig/xemacs-19.14/src/config.h.in	Wed Jun 26 19:42:34 1996
+++ xemacs-19.14/src/config.h.in	Wed Jun 26 19:54:52 1996
@@ -353,6 +353,10 @@
 */
 #undef HAVE_CDE
 
+/* Define this if you want to use the OffiX Drag and Drop
+*/
+#undef HAVE_OFFIX_DND
+
 /* Mocklisp Support. */
 #undef MOCKLISP_SUPPORT
 
diff -u --recursive orig/xemacs-19.14/src/frame-x.c xemacs-19.14/src/frame-x.c
--- orig/xemacs-19.14/src/frame-x.c	Wed Jun 26 17:16:34 1996
+++ xemacs-19.14/src/frame-x.c	Wed Jun 26 17:17:19 1996
@@ -971,6 +971,47 @@
 }
 #endif
 
+#ifdef HAVE_OFFIX_DND
+#include <OffiX/DragAndDrop.h>
+
+void 
+x_offix_drop_event_handler (Widget widget, XtPointer data, XEvent *event, 				      Boolean *b)
+{
+  int i, len, Type;	
+  unsigned char *Data;
+  unsigned long Size;
+
+  Lisp_Object path = Qnil;
+  Lisp_Object frame = Qnil;
+
+  struct gcpro gcpro1, gcpro2;
+
+  Type = DndDataType(event); 
+  if((Type != DndFile) && (Type != DndFiles) && (Type != DndExe)) return;
+  DndGetData(&Data, &Size);
+  
+  GCPRO2 (path, frame);
+
+  frame = make_frame ((struct frame *) data);
+
+  if(Type == DndFiles) {
+    while(*Data) {
+      len = strlen((char*)Data);
+      path = make_string ((char*)Data, len);
+      va_run_hook_with_args (Qdrag_and_drop_functions, 2, frame, path);
+      Data += len+1; 
+    }
+  } else {
+    path = make_string ((char*)Data, strlen(Data));    
+    va_run_hook_with_args (Qdrag_and_drop_functions, 2, frame, path);
+  }
+
+  UNGCPRO;
+  return;
+}
+
+#endif
+
 
 /************************************************************************/
 /*				widget creation				*/
@@ -1636,6 +1677,15 @@
 			 dnd_transfer_cb_rec,
 			 DtNpreserveRegistration, False,
 			 NULL);
+  }
+#endif
+
+#ifdef HAVE_OFFIX_DND
+  {
+    DndInitialize(FRAME_X_SHELL_WIDGET (f));
+    DndRegisterDropWidget(FRAME_X_TEXT_WIDGET (f), x_offix_drop_event_handler, 
+			  (XtPointer) f);
+
   }
 #endif
 
diff -u --recursive orig/xemacs-19.14/src/frame.c xemacs-19.14/src/frame.c
--- orig/xemacs-19.14/src/frame.c	Wed Jun 26 17:16:40 1996
+++ xemacs-19.14/src/frame.c	Wed Jun 26 17:17:17 1996
@@ -54,7 +54,7 @@
 Lisp_Object Vmap_frame_hook, Qmap_frame_hook;
 Lisp_Object Vunmap_frame_hook, Qunmap_frame_hook;
 Lisp_Object Vallow_deletion_of_last_visible_frame;
-#ifdef HAVE_CDE
+#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND)
 Lisp_Object Vdrag_and_drop_functions, Qdrag_and_drop_functions;
 #endif
 Lisp_Object Vmouse_motion_handler;
@@ -2879,7 +2879,7 @@
   defsymbol (&Qmouse_leave_frame_hook, "mouse-leave-frame-hook");
   defsymbol (&Qmap_frame_hook, "map-frame-hook");
   defsymbol (&Qunmap_frame_hook, "unmap-frame-hook");
-#ifdef HAVE_CDE
+#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND)
   defsymbol (&Qdrag_and_drop_functions, "drag-and-drop-functions");
 #endif
 
@@ -3057,7 +3057,7 @@
 */ );
   Vallow_deletion_of_last_visible_frame = Qnil;
 
-#ifdef HAVE_CDE
+#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND)
   DEFVAR_LISP ("drag-and-drop-functions", &Vdrag_and_drop_functions /*
 Function or functions to run when an object is dropped on a frame.
 Each function is called with two args, a frame and a pathname.
